/*
 * exame_2010_11_recurso_atletas.c
 *
 *  Created on: Jun 18, 2012
 *      Author: ubuntu
 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char **argv) {

	int mAtletas = 0;
	int nNotas = 0;

	char ** nomesAtletas = NULL;
	float ** notasAtletas = NULL;
	float * pautasAtletas = NULL;

	puts("Quantos atletas?");
	scanf("%d", &mAtletas);

	puts("Quantas notas a registar para cada atleta?");
	scanf("%d", &nNotas);

	nomesAtletas = (char**) malloc(sizeof(char*) * mAtletas);
	pautasAtletas = (float*) malloc(sizeof(float) * mAtletas);
	notasAtletas = (float**) malloc(sizeof(float*) * mAtletas);
	int i = 0;
	for (i = 0; i < mAtletas; i++) {
		notasAtletas[i] = (float*) malloc(sizeof(float) * nNotas);
	}

	puts("Leitura Informação Atletas");

	for (i = 0; i < mAtletas; i++) {
		printf("Indique nome %dº atleta\n", i + 1);
//		char * nome = (char*) malloc(sizeof(char) * 100);
//		scanf("%s ", nome);
//		nomesAtletas[i]=nome;
		char nome[100];
		scanf("%s", nome);
		nomesAtletas[i] = strdup(nome);
	}

	puts("Leitura Notas Atletas");

	for (i = 0; i < mAtletas; i++) {
		printf("Atleta: %s\n", nomesAtletas[i]);

		int j = 0;
		for (j = 0; j < nNotas; j++) {
			printf("Indique [%dº/%d] nota\n", j + 1, nNotas);
			scanf("%f", &notasAtletas[i][j]);
		}
	}

	puts("Lançamento de Pautas");
	for (i = 0; i < mAtletas; i++) {

		float maiorNota = 0;
		float menorNota = -1;
		float somaResultados = 0;

		int j = 0;
		for (j = 0; j < nNotas; j++) {

			if (notasAtletas[i][j] > maiorNota) {
				maiorNota = notasAtletas[i][j];
			}

			if (menorNota == -1 || notasAtletas[i][j] < menorNota) {
				menorNota = notasAtletas[i][j];
			}

			somaResultados += notasAtletas[i][j];
		}

		pautasAtletas[i] = (somaResultados - menorNota - maiorNota)
				/ (nNotas - 2);
		printf("Atleta %s classificao %f\n", nomesAtletas[i], pautasAtletas[i]);
	}

	puts("Guardar resultados em ficheiro");
	{
		FILE * fp = fopen("resultados.txt", "w");
		if (fp == NULL) {
			perror("fopen");
			exit(EXIT_FAILURE);
		}

		for (i = 0; i < mAtletas; i++) {
			char * resultado;
			if (pautasAtletas[i] >= 10) {
				resultado = "APROVADO";
			} else {
				resultado = "EXCLUIDO";
			}

			fprintf(fp, "<%s> %s\n", nomesAtletas[i], resultado);
		}

		fclose(fp);
	}

	puts("Fechar aplicação");
	{
		for (i = 0; i < mAtletas; i++) {
			free(notasAtletas[i]);
			free(nomesAtletas[i]);

		}
		free(pautasAtletas);
		free(notasAtletas);
		free(nomesAtletas);
	}

	return 0;
}
